Django তে QuerySets পেজিনেট করা একটি সাধারণ প্রক্রিয়া যা ব্যবহারকারীদের জন্য বড় ডেটা সেটগুলি সহজে এবং দ্রুত দেখানোর জন্য ব্যবহৃত হয়। পেজিনেশন আপনাকে ডেটাকে ছোট ছোট ভাগে বিভক্ত করতে সাহায্য করে, যাতে ব্যবহারকারী খুব সহজে একে একে পরবর্তী বা পূর্ববর্তী পৃষ্ঠায় নেভিগেট করতে পারে।
Django তে পেজিনেশন করার জন্য Paginator ক্লাস এবং Page অবজেক্ট ব্যবহৃত হয়। আপনি পেজিনেশনকে আপনার ভিউ এবং টেমপ্লেটের মধ্যে সহজেই ইন্টিগ্রেট করতে পারেন।
QuerySets পেজিনেট করার ধাপ
১. Paginator এবং Page ক্লাস ব্যবহার করা
Django তে QuerySet পেজিনেট করতে, প্রথমে Paginator ক্লাস ব্যবহার করতে হয়, তারপর এটি থেকে একটি Page অবজেক্ট তৈরি করতে হয়। এই অবজেক্টটি আপনাকে প্রয়োজনীয় পেজ এবং তার ডেটা প্রদান করবে।
from django.core.paginator import Paginator
from django.shortcuts import render
from .models import Item
def item_list(request):
item_list = Item.objects.all() # সমস্ত আইটেম নিয়ে আসা
paginator = Paginator(item_list, 10) # প্রতি পৃষ্ঠায় 10টি আইটেম
page_number = request.GET.get('page') # URL থেকে পেজ নাম্বার নেয়া
page_obj = paginator.get_page(page_number) # নির্দিষ্ট পৃষ্ঠার অবজেক্ট
return render(request, 'item_list.html', {'page_obj': page_obj})
এখানে:
item_list: সমস্ত আইটেম নিয়ে আসা হচ্ছে।Paginator: এখানে প্রতি পৃষ্ঠায় ১০টি আইটেম দেখানো হবে।get_page(page_number): URL থেকেpageপ্যারামিটার গ্রহণ করে, সঠিক পৃষ্ঠা অবজেক্টটি ফেরত দেয়।
২. টেমপ্লেট ব্যবহার করে পেজিনেশন প্রদর্শন
এখন, আপনি টেমপ্লেট ফাইলে পেজিনেশন এবং পৃষ্ঠার জন্য প্রয়োজনীয় নেভিগেশন লিঙ্কগুলো প্রদর্শন করতে পারেন।
{% for item in page_obj %}
<p>{{ item.name }}</p>
{% endfor %}
<div class="pagination">
<span class="step-links">
{% if page_obj.has_previous %}
<a href="?page=1">« first</a>
<a href="?page={{ page_obj.previous_page_number }}">previous</a>
{% endif %}
<span class="current">
Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
</span>
{% if page_obj.has_next %}
<a href="?page={{ page_obj.next_page_number }}">next</a>
<a href="?page={{ page_obj.paginator.num_pages }}">last »</a>
{% endif %}
</span>
</div>
এখানে:
page_obj: এটিPaginatorথেকে পাওয়া পেজ অবজেক্ট, যার মধ্যে রয়েছে পেজের ডেটা এবং অন্যান্য পেজিনেশন সম্পর্কিত তথ্য।has_previousএবংhas_next: এই ফিল্ডগুলি চেক করে যে, পৃষ্ঠার আগের বা পরের পৃষ্ঠাটি রয়েছে কিনা।previous_page_numberএবংnext_page_number: এগুলো আগের এবং পরবর্তী পৃষ্ঠার নাম্বার দেয়।
৩. পেজিনেশন সম্পর্কিত অতিরিক্ত ফিচার
num_pages: মোট কতটি পৃষ্ঠা রয়েছে তা জানতে এই প্রপার্টি ব্যবহার করা হয়।start_indexএবংend_index: এগুলি বর্তমানে প্রদর্শিত আইটেমগুলির সূচনা এবং শেষ ইনডেক্স দেয়।
<p>Displaying items {{ page_obj.start_index }} to {{ page_obj.end_index }} of {{ page_obj.paginator.count }} items.</p>
paginator.count: মোট ডেটার সংখ্যা যা পেজিনেট করা হয়েছে।
Django তে QuerySet পেজিনেট করার সুবিধা
- ব্যবহারকারী অভিজ্ঞতা উন্নত করা: পেজিনেশন ব্যবহারকারীদের জন্য ডেটা ছোট অংশে ভাগ করে সহজে নেভিগেট করতে সাহায্য করে।
- পারফর্ম্যান্স বৃদ্ধি: পুরো ডেটাসেট একসাথে লোড না করে, পেজিনেশন ডেটা লোডের সময় এবং রিসোর্সের ব্যবহার কমায়।
- স্বচ্ছতা: বড় ডেটাসেটের মধ্যে তথ্য খুঁজে পাওয়া সহজ হয়।
এভাবে Django তে QuerySets পেজিনেট করা যায়। পেজিনেশন আপনাকে বড় ডেটাসেটকে সহজে ম্যানেজ করতে এবং ব্যবহারকারীর জন্য আরও উন্নত অভিজ্ঞতা তৈরি করতে সাহায্য করে।
Read more